The present invention relates to digital communications systems and, more particularly to an encoding and decoding system in a disc drive or other data storage system.
In the field of digital communication systems, digital information is conveyed from a transmitter to a receiver through a channel. "Channel" is a generalized term that can include many different mediums such as recording media, telephonic lines and electromagnetic spectrum. In data storage systems, such as magnetic disc drives, the channel includes a storage medium, and the digital information is transmitted to the storage medium and stored for some period of time before being recovered and delivered to the receiver.
A typical magnetic disc drive includes one or more rigid discs mounted for rotation on a hub or spindle. Each disc has an associated data head formed of a hydrodynamic bearing and a transducer, for communicating with the surface of the disc. An electromechanical actuator moves the data head radially over the disc surface for track seek operations and holds the transducer directly over a desired track on the disc surface for track following operations. A drive controller controls the disc drive based on commands received from a host system to retrieve information from the discs and to store information on the discs. The drive controller is comprised of various subsystems, typically including a "host interface" for communicating with the host system, a "servo subsystem" for controlling the actuators and a "read channel" for recovering recorded data from the storage medium.
Information is typically stored in concentric data tracks on the disc surface. The direction of current through the transducer is controlled to encode magnetic flux reversals on the surface of the disc within the selected data track. In one type of coding, known as non-return-to-zero-inverse (NRZI) coding, a digital "1" is represented by a magnetic flux reversal from one bit position to the next in the data track, and a digital "0" is represented by a lack of a magnetic flux reversal from one bit position to the next.
In retrieving data from the disc, the servo subsystem controls the electromechanical actuator so that the data head flies above the desired data track, senses the flux reversals stored in the data track, and generates a read signal based on those flux reversals. The read signal is typically conditioned and then decoded by the read channel to recover the data represented by the flux reversals.
All channels, including disc drive storage channels, introduce noise into the signals they convey. To detect and sometimes to correct signal errors caused by this channel noise, a large number of coding techniques have been developed. These coding techniques convert data words formed of a number of data bits into code words formed of a number of code bits Coding constraints imposed in the code words permit the detection and sometimes the correction of errors in the signals received from the channel.
The average ratio of the number of data bits to the number of code bits is known as the code rate of the code. In general, the ability to detect and correct errors in a received signal may be increased as the code rate decreases because a lower code rate means a greater amount of redundant information in the code word. However, each additional bit added by the encoder increases the time and energy needed to transmit the signal through the channel.
Depending on the detection scheme, the code imposes certain constraints on the code word pattern. For example, in a disc drive, the rotational speed of the spindle motor that rotates the magnetic media varies over time. This results in non-uniform time intervals between read signal voltage pulses. A phase locked loop (PLL) is used to lock the phase and frequency of the read timing clock to the phase and frequency of the read signal voltage pulses. To ensure that the PLL is updated regularly, a code can be used that limits the number of consecutive zeroes in the coded sequence to be no greater than a maximum number "g". This constraint on the maximum length of consecutive zeroes in a coded sequence is generally known as a run-length constraint. Smaller values of "g" ensure a greater minimum update rate for timing in the PLL. However, smaller values of "g" produce more constrained codes with a lower achievable code rate.
In a magnetic recording channel that employs Partial Response, Maximum Likelihood (PRML) signaling and uses a Viterbi detector to recover the data, another constraint "i" can also be incorporated in the code to limit delay in the Viterbi algorithm. The "i" constraint in a stream of code words represents the number of consecutive zeroes in each of two bit-wise interleaved sub-sequences of binary digits within the stream. One of the subsequence is formed by taking the odd indexed binary digits of the stream, and the other of the sub-sequences is formed by taking the even indexed binary digits of the stream.
Suppose that the sequence of binary inputs to the channel is labeled {c.sub.0, C.sub.1, C.sub.2, . . . }. The compact notation ##EQU1##
is referred to as the "D-transform" of the input sequence which uses the unit delay operator "D", as it is known in the literature, to express that the coefficient c.sub.k of D.sup.k is the kth input to the channel. Partial response channels for magnetic recording condition the received output of the storage medium so that the sampled response of the system to an isolated input bit is given by a characteristic partial response polynomial, or "channel transfer function", P(D). Partial response channels for magnetic recording often have a partial response polynomial of the form EQU P(D)=(1-D)(1+D).sup.n, Eq.2
where n is a positive integer. The D-transform of the noiseless output of the channel, v(D), is given by EQU v(D)=c(D)P(D) Eq. 3
where the product is taken by normal polynomial multiplication.
Because of the (1-D)(1+D) factor of P(D), the channel has an all-zero response to long runs of consecutive same binary input symbols in the even and odd indexed binary sub-sequences and to long runs of consecutive alternating input symbols in the combined, global sequence. These sequences should be avoided because they contain little phase and amplitude information for closed loop control of the read channel.
One method of generating the desired channel input sequences is to use an encoder and a precoder at the input of the data channel. The encoder converts user data words that are to be stored in the channel into code words having selected constraints so that the code words avoid undesirable bit sequences. The precoder further conditions the code words and can have a transfer function of the form, ##EQU2##
where ".sym." denotes an exclusive-OR operation. The encoder produces a binary coded sequence b(D) which is input to the precoder. The output of the precoder is the channel input c(D), given by EQU c(D)=b(D)H(D) Eq. 5
The conditioned code words are then provided to the channel. When the noisy output of the partial response channel is received, a detector and decoder are used to estimate the original user data. An encoder and a decoder are desired which have a relatively high code rate, satisfy the selected code constraints and require only a small number of elements to implement.
The present invention addresses these and other problems, and offers other advantages over the prior art.